Math Wiki:Template documentation
This help page is about documenting templates. General template help can be found at . There are several ways to document what a template is supposed to do: # In some cases it is obvious on the template page itself without special provisions. # It can be explained in text tags. #:This method allows for such things as adding the template to a template . # Detailed documentation can be put on the template talk page. #:This method is typically mixed with the noinclude-strategy on the template page, with a reference to the talk page, and perhaps a summary. On the template page The include-part of the template page defines the way it works when transcluded or substituted, while the non-includeonly parts produce the page itself. A typical template page could contain: definition content, possibly a tag for a category of pages that include the templatedefinition content, possibly formatted, annotated, summarizedexplanation, examples, and tags for template categories (using the sortkey ) The template name within comment tags can be useful in the case of substitution. For example, for : start- }-endstart- }-endCategory:Demo templateCategory:Demo template This renders as: :start- }-endstart- }-end while without tags part of the information about the content would not be displayed: :start- }-end Alternatively the part of the definition content which is rendered without loss of information (in particular plain text) is not put in either type of tags, so that it does not have to be duplicated: start- } }Category:Demo template-end again rendered as: :start- } }-end Applying substitution without parameter produces this as wikitext. It can be displayed by subsequently putting nowiki tags around it. Table If a template produces a table it is useful if the template page shows the table structure instead of the wikitext to make it. For that purpose the table syntax is not put in either type of tags, and the table elements, where needed, each have a noinclude and an includeonly part. Rendering As shown above, in straightforward rendering of definition content, information is lost in the case of a parameter with a default value: only that value is rendered. Other cases where information is lost include: *#expr applied to an expression with a parameter gives "Expression error: unrecognised punctuation character "{"". *a variable is rendered as its value. The mechanism can also be used to document what a parameter typically does: *An undefined } is rendered as }, clearly indicating that the template expects to get a first parameter. *An undefined } displays nothing, that's probably the desired effect, but not helpful for a self-documenting template. *Maybe it's possible to indicate the function of an expected parameter, e.g. } for templates doing something with images. Typically, examples in the noinclude-part include or the template. Note that changes in the working of the template (i.e. changes outside the noinclude-part) are not yet effective in these examples in preview and, in the case of substitution, in "show changes". Category Some templates are designed to add pages to a given category. Sometimes it's good enough if the template page itself is also shown in that category. Generally that's not the case. Templates adding pages to a category then use: ...end of code[[Category:target]] documentation and/or link to talk page [[Category:tempcat| ]] Here target means a category for pages using the template, and tempcat is a category for similar templates. This method could be also used for interlanguage links in a template. A small improvement seen on some templates replaces [[Category:target]] by }. Normally the dummy parameter } is undefined (unused), and then the template adds pages to category target as before. Setting category= (empty value) allows to disable this feature on lists of templates. Otherwise template lists with examples would be added to the various target categories of templates explained by example. Examples can be used for live examples. If a template contains a it can be useful if it has been written such that the value of the variable can be overridden by a parameter value, to demonstrate the effect of various values, using e.g.: * }}} * }}} * }}} This applies especially in the case of branching depending on the value of the variable. References See also * w:Wikipedia:Template doc page pattern * *